查看原文
其他

特稿|过去5年,阿里云是如何打造云原生数据库PolarDB的

周路平 数智前线 2022-10-13



5年时间,PolarDB从一个“探索性”产品,到今天成为阿里云数据库诸多产品中的领头羊,不仅见证了阿里云在云原生数据库领域的自研创新突围,也见证了一批理想主义者在一片无人区里的坚持。


文|周路平
编|赵艳秋



“中国的数据库系统和技术,与海外的高水平数据库,几乎站在了同一个起跑线上。”2022年6月的一个下午,李飞飞在公开谈论中国数据库的发展现状时,说了这么一句话。


作为阿里云数据库的总负责人,李飞飞这么说肯定是有底气的。因为在他的带领下,在业内最为权威的Gartner云数据库魔力象限评估中,阿里云已经于2020年和2021年连续两年进入领导者(LEADERS)象限,跟亚马逊AWS、谷歌、微软等全球科技巨头同台竞技。同时,这也是中国数据库40年来首次进入全球顶级数据库行列。


在阿里云不同类型的数据库产品之中,PolarDB无疑是冉冉升起的明星产品。但如果把时间拨回2015年,PolarDB还仅仅是阿里云RDS数据库团队的一个“探索性”产品,当时仅有两位工程师在做专职研发。


从一个“探索性”产品,到今天成为阿里云数据库诸多产品中的领头羊,PolarDB过去5年极速狂奔。它的成长见证了阿里云在云原生数据库领域的自研创新突围,也见证了一批理想主义者在一片无人区里的坚持。



01

数据库大变局



2009年,阿里巴巴掀起了轰轰烈烈的“去IOE”运动。IOE是当年IT架构里的黄金搭档,I是IBM的小型机,O是Oracle的数据库,E是EMC的集中式存储,这三家美国公司构成了IT铁三角,在全球市场所向披靡。


众所周知,IOE的方案稳定性好,但扩展性差,价格昂贵,已经无法满足阿里巴巴高速发展的业务需要。去“IOE”就是用开放、便宜、通用设备来取代这些封闭、昂贵的专用设备。




在“IOE”中最难去的就是“O”,也就是Oracle数据库。因为Oracle数据库中保存的是企业最核心和最宝贵的资产——数据。更换数据库不仅意味着要面临数据迁移时损坏和丢失的风险,还意味着上层软件代码重写。


综合评估之后,阿里工程师团队决定对开源数据库MySQL进行修改以满足业务需要,这就是AliSQL的雏形。


AliSQL是MySQL的分支,阿里在这个分支上做了很多深度的定制,以充分挖掘MySQL的潜力。AliSQL支撑了阿里集团电商业务十余年,其稳定性、安全性和高性能是经过了极其严苛的实践检验。除此之外,AliSQL做了很多实用性的功能,以提高MySQL的易用性和使用效率。


到2013年,阿里的“双十一”就已经完全靠AliSQL来支撑了,同时基于AliSQL内核的RDS数据库也在阿里云上商业化,服务遍布各行各业的外部客户。


不过,随着阿里业务的快速发展,AliSQL数据库很快就接近能力极限。同时,越来越多的阿里云上的客户也提出要求,希望可以支持更大的存储,并且弹性扩缩容上更灵活、更简单。


“当时,我们团队就认识到,如果基于现有架构进行小修小补,很难解决阿里自身业务和客户提出的问题。必须从根本上演进云上的数据库架构,做一个全新的云原生数据库。”PolarDB工程师江疑回忆道。


正当阿里云的工程师们思索云上数据库架构创新的时候,亚马逊Aurora的出现令他们眼前一亮。


Aurora是亚马逊云在2014年发布的新一代数据库产品。其最大特点是计算存储分离。以前的数据库计算和存储都是一体,这种方案已经非常成熟,缺点是不利于弹性扩展,性价比不高。


作为行业的风向标,AWS的这一做法引起了全球云计算公司的关注。Aurora也成了亚马逊云的明星产品,当年在亚马逊的所有产品里年增速排第一。


一时之间,Aurora在数据库行业无人不知,无人不晓,但Aurora并没有公布详细的技术架构,谁也不知道他们如何实现计算和存储分离。


但Aurora的初步成功有个好处,它提醒业界,云原生数据库的前方流淌着奶和蜜。


“这个产品形态有市场化的前景,这个其实是最大的一个保证。”阿里云数据库首席架构师曲山说,Aurora的道路与PolarDB团队的想法不谋而合,但云原生数据库的创新之路,阿里云得自己走。


在云时代,数据库的演化经历了从采购License自建到云上托管数据库再到云原生数据库的转变。过去云是云,数据库是数据库,数据库只是部署在云上。但在云原生时代,数据库和云是合二为一的,云就是数据库,数据库就是云。


那么,何为云原生?


作为数据库领域的大咖,李飞飞打过一个形象的比方:一百年前,家家户户喝水要打一口井,每个水井都是相互独立的。如果哪天临时来了客人不够用了,要么是把井挖深一点,要么是上邻居家去挑水。这就是传统数据库的方式。




如今的云原生数据库,则是把这些水井底部的水资源连接起来,表面上还是一口口独立的水井,但是水井的底部已经连在一起,形成了一个隐形的池塘,能实现随时按需用水。


实际的工程比把水井底部连接的工程要复杂的多。水井只有水一种资源,数据库涉及计算、存储和网络等。这些资源需要放在不同的水池子里,用户对哪个资源需求高就调度哪个。


“云原生是使用云计算的标准方式。”李飞飞说。这也意味着需要一个全新的云原生数据库。


于是在2015年,阿里云数据库团队下定决心,推动云原生数据库的自研工作。


从托管数据库到云原生,阿里云走出了具有变革意义的一步。一个新的数据库时代即将拉开序幕。



02

云原生的小步快跑



战略方向正确,业务又有需求,按照外界的想象,阿里云应该拉一票人,大张旗鼓地杀入云原生数据库。


“事实并非如此。”江疑回忆,当时阿里云RDS数据库内核团队只有十几个人,大部队依然留守基本盘,根据客户的需求,需要继续挖井,不断挑战RDS的性能极限。


2015年,阿里云只派了两三名资深工程师,探索云原生,寻找计算存储分离的“水厂之路”。


云原生数据库虽然也是基于开源MySQL,但远不是在这个基础上增加点功能就能搞定,需要对很多核心模块进行重构。


“没有现成的系统可以参考,要靠自己一点点去试。”曲山说。MySQL本身是一个很复杂的系统,多达两三百万行代码,要把它啃下来,还要给它最基础的存储层进行重写,挑战非常大。


PolarDB解决的第一个技术点是物理复制。物理复制是云原生内核层的核心技术,它不是简简单单复制过去,还要保证数据的一致性,保证同步的性能,里面涉及非常多的技术细节。这个技术难题不解决,后面的技术创新也无从谈起。


2016年,第一个技术难点被攻破,PolarDB用物理复制的方式实现一写多读。前期的技术探索得到了验证,PolarDB才开始大量招兵买马,配齐存储、内核、管控等工程师,此时,RDS数据库团队的很多人也转去支持PolarDB。




这一年,阿里云的数据库也得到海外同行的关注。PolarDB相关团队受邀参加了硅谷召开的Percona Live。这是全球最有影响力的开源数据库技术大会,包括Facebook、Google、Oracle、亚马逊和Twitter等各路英豪都悉数到场。


江疑记得,首次出现的中国面孔,让欧美团队非常好奇。InnoDB的老大Sunny Bains坐在第一排,对来自中国的数据库产品表现出了浓厚兴趣,演讲结束后,他还与大家讨论了很久。亚马逊AWS的人也来了,会后也找到PolarDB的人交流。


创新就是在各种不确定性中寻找确定性,走弯路在所难免。PolarDB也不例外。


作为最早参与PolarDB内核研发的工程师,韩逸回忆,PolarDB在2015年就开始立项研发,但吭呲吭呲干了一年多,才发现少做了数据库中很重要的模块——文件系统。


当团队意识到这个问题时,距离PolarDB公测的时间已经不多了,好在最后找人花了大半年时间才把漏掉的东西补齐。


至今,韩逸对2017年的那一段时间记忆深刻。“那是PolarDB团队最艰苦的一年,有两个多月,团队所有成员都在疯狂赶代码,有时候下班会遇到早高峰。”


2017年10月,阿里云如期宣布,云原生关系型数据库PolarDB正式上线公测。


团队成员为这款数据库产品定名PolarDB,因为 “Polar”有极地的意思。地球上公认有三极:南极、北极和珠穆朗玛峰。这三个地方代表着最艰难但也是人类苦苦探索的极地和高峰。同时,也代表着阿里云数据库团队想要创造新一极的雄心。


公测当年,阿里云的开发者社区有篇文章流传甚广,里面提到PolarDB相比于MySQL有6倍性能的提升,相比传统商业数据库更是有着明显的成本下降。


当时,从产品的技术指标来看,PolarDB已经成了。



03

商业化的成功

 


做出来产品是一回事,市场买不买单才是真正的试金石。所以,PolarDB公测之后,面临的另外一个挑战则是实现营收的快速增长。


所幸,PolarDB赶上了好时候。


2018年前后,游戏和在线教育行业出现井喷,这些业务都有个特点:对数据的实时性要求非常高。而云原生数据库的弹性和快速扩展的特性,完美地匹配了这个需求。


PolarDB第一位大客户是来自在线教育领域的猿辅导。当时这家在线教育公司高速发展,但IT架构已经拖了业务后腿。在线教育业务波峰波谷非常明显,学生都是周末或者晚上上课。那些年流行大班课,一个线上课堂有几百个甚至上万人同时在线。


单机MySQL支持的用户量有限,在应对高并发业务需求时常常感到力不从心。临时扩容,又达不到实质性的扩展要求,因为背后涉及数据迁移、备库,还有大量的工作。


但PolarDB可以快速进行扩容、缩容,横向加只读节点,对业务没有影响,也不需要停机。所以,PolarDB一下就在在线教育机构里流行起来了。


游戏行业的情况,也基本类似。


当时国内一家排名非常靠前的游戏厂商,对数据库做过一系列的评估:自建数据库,架构复杂,稳定性难以保障,而且搭建和维护的成本都非常高;云托管的数据库也不够灵活,对于传统电商业务够用,但游戏还不太够。


游戏用户对时延的容忍度非常低,好不好玩是另一回事,玩的时候掉线就非常影响体验。可以想象一下,当你找准时机,准备对着敌人放大招时,结果系统掉线了,十个用户有九个能把游戏厂商的全家问候一遍。


当时业内的普遍水平是,数据库要扩容,中断30秒以内都是可以接受的,但游戏客户一秒钟都没办法容忍。而且,游戏客户经常需要备份,但多数云数据库的备份被吐槽太慢,常常多达数小时。但云原生数据库的备份都是分钟级,甚至秒级,而且恢复也非常灵活。


利弊权衡之下,这家游戏客户选择了PolarDB,扩展性强,稳定性非常高,并且相较于以往能够节省一半成本。


市场瞬间爆发的需求甚至超出了PolarDB团队的预期。面对每月环比百分之几百的增长,支持PolarDB数据库的后台服务器采购一度跟不上业务发展的需要。


如今来看,PolarDB团队有点像做风险投资一样,投中了高速增长的游戏和在线教育市场,并赢得了独角兽标杆企业的认可,以致在这两个行业获得了快速复制的机会。


但更为重要的成功机制是,PolarDB团队在追求技术创新之外,开始学习站在客户的视角上去看待技术,思考什么样的技术对客户有吸引力,客户更愿意为什么特性付费。


事实上,为了打穿游戏行业,PolarDB后面开发了不少面向游戏场景特色的功能特性。随着对游戏行业规范政策的不确定性变大,最近几年游戏公司纷纷出海,PolarDB又适时地推出了全球数据库同步能力,帮助游戏企业简化运维工作。


“PolarDB其实是应云上客户的需求而生的。”如今复盘PolarDB的成功,曲山告诉数智前线,“PolarDB成功最关键的一点是,非常好地契合了市场需求,不断解决客户提出的问题。”


而且,在庞大的市场需求和客户不断地反馈下,PolarDB的技术进步及稳定性也肉眼可见。


在PolarDB商业化初期,客户经常会找阿里云数据库工程师反馈各种问题。但是一段时间之后,很多数据库工程师发现,客户再找他们的频率已经大幅下降。有时候工程师反而会主动去问客户有什么问题,得到的回复常常是:用得挺好,没有什么问题。这让PolarDB的工程师们感觉“特别好”。


2018年,阿里巴巴在国际数据库顶级大会VLDB上发表论文,介绍PolarDB的存储系统。团队惊喜地发现,这篇论文很快被慕尼黑大学、普渡大学、旧金山大学等高校的数据库课程引用为课件,用于给学生授课。



04

茶馆论道

 


2019年的一天,杭州西溪园区旁的一个茶馆,坐着七八位理工男,他们是阿里云数据库PolarDB的核心团队。


来茶馆之前,他们已经在公司会议室里讨论了一天。会议室狭小,空气沉闷,大家觉得要换个环境,有个清醒的头脑,最终步行去了公司附近的茶馆。


尽管也聊同行和客户,但会议的主题非常明晰:新一代云原生技术架构会走向何方。


当时,PolarDB已经商业化,大量对数据库弹性和性能要求更高的客户纷纷迁移过来。


但PolarDB团队却有点发愁。没吃饱饭时只有一个烦恼,吃饱了饭就有无数个烦恼。PolarDB技术上已经是第一梯队,接下去在无人区中怎么走,构建更深的技术壁垒是团队永恒的话题。


当时的意见分成了两派:


一部分人的思路是跟随。Aurora作为分布式数据库的行业先行者,它做啥我们做啥,这样能够避开很多坑,成功概率更高。


另一群人的观点要超越。要在技术和业务上超越Aurora,我们才可能做全球的第一。PolarDB内部经常说一句话:要推动中国的数据库技术的演进。野心很大,也很疯狂。


后者听起来热血沸腾,但争议最大,首先是否真的有这么大的能力,其次是否能承担高昂的试错成本。跟在Aurora后面走,也是一条稳健的路。


但决策层最终支持了第二条路:先在技术上超越Aurora,然后在业务上超越,最后做全球第一。


亚马逊云在研发Aurora数据库的时候,网络还是瓶颈,但阿里云决定做PolarDB的时候,却坚定认为网络已不是问题,“过去基于内核提供的syscall开发的软件代码,才是拖慢系统的一环”。


所以,Aurora的思路是要节省带宽,阿里云则认为解决延迟是关键,倾向于软硬结合。PolarDB研发那几年,硬件的演进速度比较快,软硬件一体设计让PolarDB也有了后发优势。根据最新测试,PolarDB今天能够以50%的成本提供Aurora 400%的性能。


如果说第一代架构时,阿里云还受Aurora的启发。但走到现在,一个选择了珠峰南坡,一个选择了珠峰北坡,两个产品在技术路线上走的是独立发展道路。没有别人的东西能借鉴,PolarDB要继续走自己的道路。


这不仅是技术方向的探索,更是一次信心的重构。


这次的茶馆论道,基本确定了PolarDB后面几年的技术方向,就是不断释放云计算资源池化的潜力。事后看来,茶馆里探讨的云原生技术方向在此后几年被一步步实现,成了PolarDB能保持技术领先的关键。


过去两年里,PolarDB 所实现的计算、内存与存储资源的“三层解耦”架构、多主多写、基于内存池化的HTAP、Serverless等功能已是全球首创或业内领先的技术,也都是在最大化云计算资源池化的价值。




2020年12月14日,中国电子学会正式公布2020年中国电子学会科学技术奖名单,阿里云主导的“云原生分布式关系型数据库PolarDB”项目获得科技进步一等奖。这也是继飞天云操作系统之后,阿里云再次有自研技术获此殊荣。


2020年,阿里云还首次进入Gartner全球云数据库领导者象限,评选维度涵盖前瞻性和执行力两大维度共15个核心指标以及200多项细则。这也是中国数据库40年来首次进入全球顶级数据库行列,并且在2021年蝉联。


这份荣誉属于阿里云,也属于中国数据库。


当时,阿里云专门在办公室开了个小型庆功会。庆功会表达了两个意思:一个是要把技术化为业务价值,另一个就是要继续坚持技术的演进。



05

中国的数据库之火

 


如今,阿里云数据库已经是人丁兴旺的大家庭。


根据数据库的分类,在OLTP领域,阿里云有云托管数据库RDS,云原生关系型数据库PolarDB以及分布式版PolarDB-X。在OLAP领域,阿里云有新一代云原生数据仓库AnalyticDB以及云托管Clickhouse。在NoSQL领域,阿里云推出了云原生多模数据库Lindorm和云原生内存数据库Tair。


齐头并进,多点开花。


2018年5月,李飞飞加盟阿里巴巴,全面负责阿里云的数据库产品。李飞飞此前是美国犹他大学的计算机系教授,入选了国际计算机学会以及国际电子电气学会公布的2021年新选会士名单。


李飞飞加盟后,大刀阔斧整合了阿里集团和阿里云的数据库技术和团队。此前,在数据库的研发侧重上,阿里云往云原生方向阔步向前,阿里集团则根据自身业务需要,往分布式方向发力。


合并之后,这两条技术路线都在发展,同时也互相吸取对方的技术优势。


阿里达摩院也有一个数据库研发团队,他们保持在数据库前沿技术和基础科研上的探索,阿里云负责将技术转化为产品。阿里云数据库发表的高水平论文,做的很多自研技术和产品,背后都有达摩院的功劳。比如达摩院研发的加密数据库技术和空天数据库引擎,最早就在PolarDB落地。


2019年5月,PolarDB发布大版本更新。当时,李飞飞就断言,未来的数据库一定是云原生数据库。他说,云原生数据库在成本、灵活度、安全、技术进化层面都优于传统数据库,“传统数据库会像马车一样被淘汰”。 


事实上,“云数据库是未来”并不只是云数据库厂商的说法。Gartner在其发布的研究报告中明确提出,传统的自己部署数据库的方式已经过时。云是未来,所有组织,无论大小都将越来越多地使用云数据库。Gartner还预计,到2023年75%的数据库要跑在云平台之上。


毫无疑问,数据库市场格局正在发生巨变,而在这场事关数据库未来新格局的争夺中,PolarDB凭借在云原生数据库市场上的成功卡位,已经为中国在数据库领域赢得了尊重和行业影响力。


“从全球数据库顶级会议的录取论文数据来看,中国数据库技术创新能力已经达到了世界先进水平。”中国人民大学明理书院院长、中国计算机学会理事、数据库专委会资深委员杜小勇认为,中国有着丰富而独特的数据库应用场景,随着国家科技自立自强重大战略的实施,以及对创新的鼓励,中国数据库技术发展进入了一个千载难逢的机遇期。


从现代数据库40多年的发展历史来看,PolarDB创新的5年并不算长。但是,它是中国数据库厂商在数据库新赛道上蓬勃创新、不断向上的一个缩影和代表,正像一颗火种一样,点燃中国数据库的熊熊之火。




©本文为数智前线(szqx1991)原创内容

未经授权,禁止转载

转载或商务合作联系后台






文章精选

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存